﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using SOAPServices.Persistencia;
using SOAPServices.Dominio;


namespace SOAPServices
{
    public class Veterinarios : IVeterinario
    {
        private VeterinarioDAO veterinarioDAO = null;
        private VeterinarioDAO VeterinarioDAO
        {
            get
            {
                if (veterinarioDAO == null)
                    veterinarioDAO = new VeterinarioDAO();
                return veterinarioDAO;
            }
        }

        public Veterinario CrearVeterinario(string VeterinarioNombre, string VeterinarioApellidoP, string VeterinarioApellidoM, string CVP)
        {
            Veterinario v = new Veterinario()
            {
                txtVeterinarioNombre = VeterinarioNombre,
                txtVeterinarioApellidoP = VeterinarioApellidoP,
                txtVeterinarioApellidoM = VeterinarioApellidoM,
                numCVP = CVP
            };
            try
            {
                List<Veterinario> a = ListarVeterinario();
                foreach (Veterinario i in a)
                {
                    if (i.numCVP == CVP)
                        throw new FaultException("NCVP Ya existe, por favor ingresar nuevamente.");
                }
            }

            catch(FaultException ex)
            {
                throw ex;
            }
            return VeterinarioDAO.Crear(v);
            
        }

        public Veterinario ObtenerVeterinario(int codigo)
        {
            return VeterinarioDAO.Obtener(codigo);
        }

        public Veterinario ModificarVeterinario(int Codigo, string VeterinarioNombre, string VeterinarioApellidoP, string VeterinarioApellidoM, string CVP)
        {
            Veterinario v = new Veterinario()
            {
                IdVeterinario = Codigo,
                txtVeterinarioNombre = VeterinarioNombre,
                txtVeterinarioApellidoP = VeterinarioApellidoP,
                txtVeterinarioApellidoM = VeterinarioApellidoM,
                numCVP = CVP
            };
            return VeterinarioDAO.Modificar(v);
        }

        public void EliminarVeterinario(int codigo)
        {
            Veterinario v = VeterinarioDAO.Obtener(codigo);
            VeterinarioDAO.Eliminar(v);
        }

        public List<Veterinario> ListarVeterinario()
        {
            return VeterinarioDAO.ListarTodos().ToList();
        }
    }
}
